// 这个文件里面所有的函数都要写成generator函数
// generator函数是不能写成箭头函数
import { call, put, takeEvery } from "redux-saga/effects";
import { delay } from "../utils";
import { getData } from "../api";

function* fn() {
  yield console.log("fn");
  // 在sagas里面，调用put，就相当于组件调用dispatch
  yield put({ type: "zzz" });
}
function* fn2(action) {
  // yield后面必须是promise对象
  yield delay(1000);
  yield put({ type: "add", payload: action.payload });
}
function* fn3() {
  // call就是用来请求数据的
  const res = yield call(getData);
  // console.log(res);
  yield put({ type: "load", payload: res.result });
}

function* mySaga() {
  // takeEvery用来做分配，第一个参数字符串和type属性对上，就执行后面的回调函数
  // fn是一个回调函数
  yield takeEvery("abc", fn);
  yield takeEvery("addAction", fn2);
  yield takeEvery("loadAction", fn3);
}

export default mySaga;
